Ensure we show native window when creating them for already visible windows
authorAlexander Larsson <alexl@redhat.com>
Thu, 18 Dec 2008 13:59:54 +0000 (14:59 +0100)
committerAlexander Larsson <alex@localhost.localdomain>
Thu, 2 Apr 2009 08:15:17 +0000 (10:15 +0200)
gdk/gdkwindow.c

index d8817c0bd7ad9e201d504d590aa4561136886de4..ca5d30b00fe8305ad09c0ad0bd6740529b75246a 100644 (file)
@@ -248,6 +248,7 @@ static void do_move_region_bits_on_impl (GdkWindowObject *private,
                                         GdkRegion *region, /* In impl window coords */
                                         int dx, int dy);
 static void gdk_window_invalidate_in_parent (GdkWindowObject *private);
+static void show_all_visible_impls (GdkWindowObject *private);
   
 static gpointer parent_class = NULL;
 
@@ -1145,6 +1146,9 @@ gdk_window_set_has_native (GdkWindow *window, gboolean has_native)
       change_impl (private, new_impl);
 
       GDK_WINDOW_IMPL_GET_IFACE (private->impl)->input_shape_combine_region ((GdkWindow *)private, private->input_shape, 0, 0);
+
+      if (gdk_window_is_viewable (window))
+       show_all_visible_impls (private);
     }
   else
     {
@@ -5209,7 +5213,7 @@ gdk_window_show_internal (GdkWindow *window, gboolean raise)
       private->state = 0;
     }
 
-  if (gdk_window_is_viewable (window))
+  if (!was_mapped && gdk_window_is_viewable (window))
     show_all_visible_impls (private);
   
   if (!was_mapped)